package com.adk.backend.service;

import com.adk.backend.common.PageResult;
import com.adk.backend.entity.LxTradeOrderList;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 贸易订单服务接口
 */
public interface TradeOrderService {
    
    /**
     * 分页查询贸易订单列表
     */
    PageResult<Map<String, Object>> getTradeOrderList(Map<String, Object> params);
    
    /**
     * 根据ID查询贸易订单详情
     */
    LxTradeOrderList getTradeOrderById(Long id);
    
    /**
     * 根据订单号查询贸易订单
     */
    LxTradeOrderList getTradeOrderByOrderNo(String orderNo);
    
    /**
     * 创建贸易订单
     */
    LxTradeOrderList createTradeOrder(LxTradeOrderList tradeOrder);
    
    /**
     * 更新贸易订单
     */
    boolean updateTradeOrder(LxTradeOrderList tradeOrder);
    
    /**
     * 删除贸易订单
     */
    boolean deleteTradeOrder(Long id);
    
    /**
     * 更新贸易订单状态
     */
    boolean updateTradeOrderStatus(Long id, Integer status);
    
    /**
     * 获取贸易订单跟踪信息
     */
    List<Map<String, Object>> getTradeOrderTracking(Long orderId);
    
    /**
     * 获取贸易订单状态列表
     */
    Map<String, Object> getTradeOrderStatusList(Long id);
    
    /**
     * 获取报关检查订单信息
     */
    Map<String, Object> getTradeOrderForDeclearCheck(Long id);
    
    /**
     * 更新报关检查状态
     */
    boolean updateDeclearCheck(Long id, Map<String, Object> params, Integer userId);
    
    /**
     * 更新巴彦信息
     */
    boolean updateBayan(Long id, Map<String, Object> params, Integer userId);
    
    /**
     * 获取贸易费用信息
     */
    Map<String, Object> getTradeFee(Long id);
    
    /**
     * 保存贸易费用
     */
    boolean saveTradeFee(Long id, Map<String, Object> params, Integer userId);
    
    /**
     * 上传报关文件
     */
    boolean uploadCustom(Long id, MultipartFile[] files, Integer userId);
}

